'\ t
.TH "PARU" "8" "2020\-11\-2" "paru v1.0.2 "Paru Manual"
.nh
.ad l
.SH NAME
paru \- AUR helper and pacman wrapper

.SH SYNOPSIS
\fIparu\fR <operation> [options] [targets]
.sp
\fIparu\fR <search terms>
.sp
\fIparu\fR

.SH DESCRIPTION
Paru is an AUR helper written in Rust and based on the design of yay. It aims
to be your standard pacman wrapping AUR helper with minimal interaction.

Paru is a tool to easily build and install packages from the AUR, along with
their dependencies. Paru also expands many of pacman's options making them
AUR aware.

This manpage only covers options unique to paru. For other options see
\fBpacman(8)\fR.

.SH PARU OPERATIONS
.TP

.TP
.B \-P, \-\-show
Printing related options.

.TP
.B \-G, \-\-getpkgbuild
Downloads PKGBUILDs from the ABS or AUR. The ABS can only be used for Arch
Linux repositories.

.TP
.B \-U, \-\-upgrade
When ran without targets, like makepkg, builds a PKGBUILD in the current directory.


.TP
.B \-L, \-\-repoctl
List local repos.

.TP
.B \-C, \-\-chrootctl
Interactive shell to the chroot.

.RE
If no arguments are provided 'paru \-Syu' will be performed.

.SH EXTENDED PACMAN OPERATIONS
.TP
.B \-R, \-S, \-Si, \-Sl, \-Ss, \-Su, \-Sc, \-Qu \-T
These operations are extended to support both AUR and repo packages.

.TP
.B \-R
Paru will also remove cached data about devel packages.

.TP
.B \-Sc
Paru will also clean cached AUR packages and any untracked files in the
cache. Cleaning untracked files will wipe any downloaded sources or
built packages but will keep already downloaded VCS sources.
-d or --delete can be passed to delete the entire package instead of just
cleaning it.

.TP
.B \-Sss
Paru will also output a verbose search result when passing two
'--search' or '-s' flags.

.TP
.B \-S, \-Si, \-Sl, \-Ss, \-Su, \-Qu
Paru will also handle AUR packages for these operations.

.TP
.B \-Ta
Will filter a list of packages to ones that appear in the AUR.

.SH NO OPERATION

.TP
.B <NO OPTION>
Interactive search and install. Displays a list of packages matching the search
terms and prompts the user on which packages to install.

.TP
.B \-\-gendb
Generate the development package database. This tracks the latest commit for
each development package, so when there is a new commit paru will know to
update. This is done per package whenever a package is synced. This option
should only be used when migrating to paru from another AUR helper.

This also causes paru to assume all current development packages are up to
date. Updates will then be detected on the next commit.

.TP
.B \-c, \-\-clean
Remove unneeded dependencies.

Make and check dependencies are considered for
foreign packages. Pass this twice to ignore these.

.SH SHOW OPTIONS (APPLY TO \-P AND \-\-SHOW)
.TP
.B \-c, \-\-complete
Print a list of all AUR and repo packages. This allows shell completion
and is not intended to be used directly by the user.

.TP
.B \-s, \-\-stats
Displays information about installed packages and system health. If there
are orphaned, or out-of-date packages, or packages that no longer
exist on the AUR; warnings will be displayed.

.TP
.B \-w, \-\-news
Print new news from the Arch Linux homepage. News is considered new if it is
newer than the build date of all native packages. Pass this twice to show all
available news.

.SH GETPKGBUILD OPTIONS (APPLY TO \-G AND \-\-GETPKGBUILD)
.TP
.B \-p, \-\-print
Prints the PKGBUILD to the terminal instead of downloading it.

.TP
.B \-c, \-\-comments
Print the AUR comments from the PKGBUILD's AUR page.

.SH REPOCTL OPTIONS (APPLY TO \-L AND \-\-REPOCTL)
.TP
.B \-l, \-\-list
List packages in local repos

.TP
.B \-d, \-\-delete
Remove a package from the local repo.
Pass this twice to also uninstall the package.

.TP
.B \-q, \-\-quiet
Show less information.

.SH CHROOTCTL OPTIONS (APPLY TO \-C AND \-\-CHROOTCTL)
.TP
.B \-i, \-\-install
Install a package into the chroot.

.TP
.B \-u, \-\-upgrade
Upgrade the chroot.

.SH UPGRADE OPTIONS (APPLY TO \-U AND \-\-UPGRADE)
.TP
.B \-i, \-\-install
Also install the package once built.

.SH NEW OPTIONS
.TP
.B \-\-repo
Assume all targets are from the repositories. Additionally, actions such as
sysupgrade will only act on repository packages.

.TP
.B \-a, \-\-aur
Assume all targets are from the AUR. Additionally, actions such as
sysupgrade will only act on AUR packages.

Note that dependency resolution will still include repository packages.

.TP
.B \-\-aururl
Set an alternative AUR URL. This is mostly useful for users in China who wish
to use https://aur.tuna.tsinghua.edu.cn/.

.TP
.B \-\-clonedir <dir>
Directory used to download and run PKGBUILDs.

.TP
.B \-\-makepkg <command>
The command to use for \fBmakepkg\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B \-\-pacman <command>
The command to use for \fBpacman\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B \-\-git <command>
The command to use for \fBgit\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B \-\-gitflags <flags>
Passes arguments to git. These flags get passed to every instance where
git is called by paru. Arguments are split on whitespace before being
passed to git. Multiple arguments may be passed by supplying a space
separated list that is quoted by the shell.

.TP
.B \-\-gpg <command>
The command to use for \fBgpg\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B \-\-gpgflags <flags>
Passes arguments to gpg. These flags get passed to every instance where
gpg is called by paru. Arguments are split on whitespace before being
passed to gpg. Multiple arguments may be passed by supplying a space
separated list that is quoted by the shell.

.TP
.B \-\-fm <command>
This enables fm review mode, where PKGBUILD review is done using the file
manager specified by command.

.TP
.B \-\-fmflags <flags>
Passes arguments to file manager. These flags get passed to every instance where
file manager is called by paru. Arguments are split on whitespace before being
passed to the file manager. Multiple arguments may be passed by supplying a space
separated list that is quoted by the shell.

.TP
.B \-\-asp <command>
The command to use for \fBasp\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B \-\-mflags <flags>
Passes arguments to makepkg. These flags get passed to every instance where
makepkg is called by paru. Arguments are split on whitespace before being
passed to makepkg. Multiple arguments may be passed by supplying a space
separated list that is quoted by the shell.

.TP
.B \-\-bat <command>
The command to use for \fBbat\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.

.TP
.B \-\-batflags <flags>
Passes arguments to bat. These flags get passed to every instance where
bat is called by paru. Arguments are split on whitespace before being
passed to bat. Multiple arguments may be passed by supplying a space
separated list that is quoted by the shell.

.TP
.B \-\-sudo <command>
The command to use for \fBsudo\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file. The --sudoloop option is not
guaranteed to work with a custom \fBsudo\fR command.

.TP
.B \-\-sudoflags <flags>
Passes arguments to sudo. These flags get passed to every instance where
sudo is called by paru. Arguments are split on whitespace before being
passed to sudo. Multiple arguments may be passed by supplying a space
separated list that is quoted by the shell.

.TP
.B \-\-completioninterval <days>
Time in days to refresh the completion cache. Setting this to 0 will cause the
cache to be refreshed every time, while setting this to -1 will cause the cache
to never be refreshed. Defaults to 7.

.TP
.B \-\-sortby <votes|popularity|id|baseid|name|base|submitted|modified>
Sort AUR results by a specific field during search. Defaults to votes.

.TP
.B \-\-searchby <name|name-desc|maintainer|depends|checkdepends|makedepends|optdepends>
Search for AUR packages by querying the specified field. Defaults to name-desc.

.TP
.B \-\-skipreview
Skip the review process.

.TP
.B \-\-review
Don't skip the review process.

.TP
.B \-\-upgrademenu
Show a detailed list of updates in a similar format to pacman's VerbosePkgLists
option. (See 
.BR pacman.conf(5)).
Upgrades can be skipped using numbers, number ranges, or repo
names.

\fBWarning\fR: It is not recommended to skip updates from the repositories as
this can lead to partial upgrades. This feature is intended to easily skip AUR
updates on the fly that may be broken or have a long compile time. Ultimately
it is up to the user what upgrades they skip.

.B \-\-noupgrademenu
Do not show the upgrade menu.

.TP
.B \-\-removemake [yes|no|ask]
Remove makedepends after installing packages. If set to ask, a menu will appear
during builds allowing an option to be chosen then. Defaults to yes when
specified without an option.

.TP
.B \-\-noremovemake
Don't remove makedepends after installing packages.

.TP
.B \-\-topdown
Print search results from top to bottom. Repo packages will print first. This
is the default.

.TP
.B \-\-bottomup
Print search results from bottom to top. AUR packages will print first.

.TP
.B \-\-nocheck
Don't resolve checkdepends or run the check function.

.TP
.B \-\-installdebug
Also install debug packages when a package provides them.

.TP
.B \-\-noinstalldebug
Don't install debug packages when a package provides them.

.TP
.B \-\-devel
During sysupgrade also check AUR development packages for updates. Currently
only Git packages are supported.

Devel checking is done using \fBgit ls-remote\fR. The newest commit hash is
compared against the hash at install time. This allows devel updates to be
checked almost instantly and not require the original PKGBUILD to be downloaded.

The slower pacaur-like devel checks can be implemented manually by piping
a list of packages into paru (see \fBexamples\fR).

.TP
.B \-\-nodevel
Do not check for development packages updates during sysupgrade.

.TP
.B \-\-develsuffixes
Suffixes that paru will use to decide if a package is a devel package. 
Used when determining if a pkgver bump is used when the --needed option is
set.

.TP
.B \-\-cleanafter
Remove untracked files after installation.

Untracked files are removed with the exception of directories. This allows VCS
packages to easily pull an update instead of having to reclone the entire repo.

.TP
.B \-\-nocleanafter
Do not remove package sources after successful install.

.TP
.B \-\-redownload [yes|no|all]
Always download PKGBUILDs of targets even when a copy is available in
cache. If all is specified, then PKGBUILDs will be downloaded for all packages,
not just targets. Defaults to yes when specified.

.TP
.B \-\-noredownload
When downloading PKGBUILDs, if the PKGBUILD is found in cache and is equal or
newer than the AUR's version use that instead of downloading a new one.

.TP
.B \-\-provides
Look for matching providers when searching for AUR packages. When multiple
providers are found a menu will appear prompting you to pick one. This
increases dependency resolve time although this should not be noticeable.

.TP
.B \-\-noprovides
Do not look for matching providers when searching for AUR packages. Paru will
never show its provider menu but pacman will still show its provider menu for
repo packages.

.TP
.B \-\-pgpfetch
Prompt to import unknown PGP keys from the \fBvalidpgpkeys\fR field of each
PKGBUILD.

.TP
.B \-\-nopgpfetch
Do not prompt to import unknown PGP keys. This is likely to cause a build
failure unless using options such as \fB\-\-skippgpcheck\fR or a customized
gpg config\%.


.TP
.B \-\-newsonupgrade
Print new news during sysupgrade.

.TP
.B \-\-useask
Use pacman's --ask flag to automatically confirm package conflicts. Paru lists
conflicts ahead of time. It is possible that paru does not detect a conflict, 
causing a package to be removed without the user's confirmation. However, this
is very unlikely.

.TP
.B \-\-nouseask
Manually resolve package conflicts during the install. Packages which do not
conflict will not need to be confined manually.

.TP
.B \-\-combinedupgrade
During sysupgrade, paru will first perform a refresh, then show
its combined menu of repo and AUR packages that will be upgraded. Then after
reviewing the PKGBUILDs, the repo and AUR upgrade will start with no need
for manual intervention.

If paru exits for any reason after the refresh without upgrading, it will be
the user's responsibility to either resolve the reason paru exited or run
a sysupgrade through pacman directly.

.TP
.B \-\-nocombinedupgrade
During sysupgrade, pacman \-Syu will be called, then the AUR upgrade will
start. This means the upgrade menu and PKGBUILD review will be performed
after the sysupgrade has finished.

.TP
.B \-\-batchinstall
When building and installing AUR packages instead of installing each package
after building, queue each package for install. Then once either all packages
are built or a package in the build queue is needed as a dependency to build
another package, install all the packages in the install queue.

.TP
.B \-\-nobatchinstall
Always install AUR packages immediately after building them.

.TP
.B \-\-rebuild [yes|no|all]
Always build target packages even when a copy is available in cache. If all is
selected then all packages are rebuilt, not only targets. Defaults to no.

.TP
.B \-\-norebuild
When building packages if the package is found in cache and is an equal version
to the one wanted skip the package build and use the existing package.

.TP
.B \-\-sudoloop [= args...]
Periodically call sudo in the background to prevent it from timing out during
long builds.

Optionally args can be passed to choose how to loop the command. This may be
useful for doas where looping is done differently.

.TP
.B \-\-nosudoloop
Do not loop sudo calls in the background.

.TP
.B \-\-localrepo [= Repos...]
Use a local repo to build and upgrade AUR packages.

Paru will act on packages in the enabled repos instead of foreign packages.
The repo must already be declared in pacman.conf but does not have to already exist on disk.

Optionally a list of repos to use can be passed. By default paru will consider all
local repos, building new packages into the first listed repo and upgrading the packages
in other enabled repos.

.TP
.B \-\-chroot [= /path/to/chroot]
Build packages in a chroot. This requires the LocalRepo option to be enabled.
Optionally a directory may be passed to specify where to create the chroot.

.TP
.B \-\-nochroot
Don't build packages in a chroot.

.TP
.B \-\-sign [= key]
Sign packages with gpg. Optionally indicate which key to sign with.

.TP
.B \-\-nosign
Don't sign package with gpg.

.TP
.B \-\-signdb [= key]
Sign databases with gpg. Optionally indicate which key to sign with.

.TP
.B \-\-nosigndb
Don't sign databases with gpg.

.SH EXAMPLES
.TP
paru \fIfoo\fR
Search and install from the repos and the \fBAUR\fR\ using interactive search
and install.

.TP
paru \-Syu
Update package list and upgrade all currently installed repo and \fBAUR\fR
packages.

.TP
paru \-Sua
Update all currently installed \fBAUR\fR packages.

.TP
paru \-S \fIfoo\fR
Installs package \fIfoo\fR from the repos or the \fBAUR\fR.

.TP
paru \-Ss \fIfoo\fR
Searches for package \fIfoo\fR on the repos or the \fBAUR\fR.

.TP
paru \-Si \fIfoo\fR
Gets information about package \fIfoo\fR from the repos or the \fBAUR\fR.

.TP
paru \-S \fIfoo\fR \-\-mflags "\-\-skipchecksums \-\-skippgpcheck"
Installs \fIfoo\fR while skipping checksums and PGP checks.

.TP
pacman -Qmq | grep -Ee '-(cvs|svn|git|hg|bzr|darcs)$' | paru -Ta - | paru -S --needed -
pacaur-like devel check.

.SH ENVIRONMENT VARIABLES

.TP
.B AURDEST
Can be set to configure the build directory.

Overridden by \-\-clonedir.

.TP
.B PARU_CONF
Overrides where paru will look for its config file.

.TP
.B PARU_PAGER
The pager paru will use for file review. Has higher priority than PAGER but lower priority
than paru.conf.


.SH FILES
.TP
.B CONFIG DIRECTORY
The config directory is \fI$XDG_CONFIG_HOME/paru/\fR. If
\fB$XDG_CONFIG_HOME\fR is unset, the config directory will fall back to
\fI$HOME/.config/paru\fR.

\fIparu.conf\fR is used to store all of paru's config options. See
.BR paru.conf (5)
for more about this file.

.TP
.B CACHE DIRECTORY
The cache directory is \fI$XDG_CACHE_HOME/paru/\fR. If
\fB$XDG_CACHE_HOME\fR is unset, the cache directory will fall back to
\fI$HOME/.cache/paru\fR.

\fIpackages.aur\fR holds a list of of all AUR packages for shell
completion. By default the completion files are refreshed every 7 days.

\fIdevel.json\fR tracks VCS packages and the latest commit of each source. If
any of these commits change the package will be upgraded during a devel update.

.TP
.B BUILD DIRECTORY
Unless otherwise set this should be the same as \fBCACHE DIRECTORY\fR. This
directory is used to store downloaded AUR Packages as well as any source files
and built packages from those packages.

.TP
.B PACMAN.CONF
Paru uses pacman's config file to set certain pacman options either through
alpm.rs or paru itself. Options inherited include most libalpm options and
pacman options.

Notably: \fBDatabases\fR, \fBColor\fR and \fB*Path/*Dir\fR options are used.

.SH SEE ALSO
.BR paru.conf (5),
.BR makepkg (8),
.BR makepkg.conf (5),
.BR PKGBUILD (5),
.BR pacman (8),
.BR pacman.conf (5)

See the arch wiki at https://wiki.archlinux.org/index.php/Arch_User_Repository
for more info on the \fBAUR\fR.

.SH BUGS
Please report bugs to our GitHub page \fBhttps://github.com/Morganamilo/paru\fR.

.SH AUTHORS
Morgan <morganamilo@archlinux.org>
